///******************** NG.Respate(C)  **********************************
//* 产品名称: Respate 科技
//* 文件名称: daemon.c
//* 程序作者: 雷帕特公司(南宫子萍)
//* 程序版本: V1.1														   
//* 编制日期: 2019/1/29
//* 功能描述: 守护进程
//* QQ:	2085827949
//**********************************************************************/
#ifndef __LAP_LIB_H__
#define __LAP_LIB_H__

// #########################
#include "LapRead.h"

// #########################






#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
#include <stdio.h>
#include <sys/stat.h>
#include <fcntl.h>


//函数实现以下6点 便可以成为守护进程
/*
**	1.父进程先于子进程退出
**	2.子进程使用 setsid函数创建新的会话期，脱离控制台
**	3.调用 chdir 将当前工作目录设置为根目录'/'
**	4.umask设置为0 用于取消任何文件权限屏蔽
**	5.关闭所有文件描述符
**	6.将0、1、2 重定位到 /dev/null	(垃圾箱)
*/
/*********************************************************************************
** 函数名称: lap_daemon
** 功能描述: 将调用该函数的进程变为一个守护进程
** 输入参数: path:此守护进程的运行目录  传参为 NULL时：默认为 /root/lap
**			 传参为不存在路径时：自动创建该路径
** 输出参数: None.
** 返回参数: return response .
**********************************************************************************/
void lap_daemon(const char * path);


#include <stdlib.h>
#include <string.h>
/*********************************************************************************
** 函数名称: lap_getFile
** 功能描述: 指定路径下 得到文件
** 输入参数: src:文件路径			Path:分割后的路径 
** 输出参数: 文件名称  NULL:字符串结尾 非文件
** 返回参数: return response .
**********************************************************************************/
char* lap_getFile(const char* src,char *Path);



/*********************************************************************************
** 函数名称: lap_creatFile
** 功能描述: 创建一个文件的完整路径
** 输入参数: path:文件路径			file:文件名称       
** 输出参数: None.
** 返回参数: return response .
**********************************************************************************/
void lap_creatFile(const char * path,const char * file);





#include <sys/stat.h>
#include <fcntl.h>
#include <strings.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
/*********************************************************************************
** 函数名称: lap_syslog
** 功能描述: 让此调用此函数的程序 只能有一个正在运行
** 输入参数: None.        
** 输出参数: None.
** 返回参数: return .
**********************************************************************************/
void lap_single(const char * file);




#include <stdio.h>
#include <stdlib.h>
/*********************************************************************************
** 函数名称: lap_kill 
** 功能描述: 结束进程
** 输入参数: pid：要结束的进程        
** 输出参数: None.
** 返回参数: return .
**********************************************************************************/
void lap_kill(int pid);




#include <sys/stat.h>
#include <fcntl.h>
#include <time.h>

/*********************************************************************************
** 函数名称: lap_openlog
** 功能描述: 打开/创建 系统日志
** 输入参数: path：日志文件的路径				name：信息标识符     
** 输出参数: None.
** 返回参数: return response .
**********************************************************************************/
void lap_openlog(const char* path,const char* name);



/*********************************************************************************
** 函数名称: lap_openlog
** 功能描述: 打印系统日志
** 输入参数: info：打印信息     
** 输出参数: None.
** 返回参数: return response .
**********************************************************************************/
void lap_syslog(const char *info);








// 指针转 类型结构体
#define LAP_PTR2TYPE(ptr,type) \
(\
(type)(*(ptr))\
)






//	返回值错误 相关处理函数
//	Lap_lib/inc/laperro.h
#if 1
#include "laperro.h"
#endif


#endif






																						 
